Справочное руководство по TDMS 5.0 API
VB Script
Смотри также Послать замечания

Glossary Item Box

Исходный код

Option Explicit
USE CMD_TEST
Call TestExeScript()

'==============================================================================
' Примеры использования функции ExecuteScript и вызова процедур из другого модуля
' (сохраненная команда "CMD_TEST")
'==============================================================================
Sub TestExeScript()
            Dim cmd, res, ObjRes 

            'Получить ссылку на команду "CMD_TEST"
            Set cmd = ThisApplication.Commands("CMD_TEST")
            
            'В качестве аргумента методу ExecuteScript передать объект cmd.
            'В результате будет выполнено тело команды, а именно строка
            'ThisScript.RetValue = ThisApplication.WorkFolder 
            res = ThisApplication.ExecuteScript(cmd)
            MsgBox res, , "Путь к рабочей папке" 'Сообщает путь к рабочей папке 
            
            'В качестве аргумента методу ExecuteScript можно передать текстовое представление
            'команды (с помощью свойства TDMSCommand.Script)
            res = ThisApplication.ExecuteScript(cmd.Script)
            'Результат такой же, как в предыдущем вызове ExecuteScript 
            MsgBox res, , "Путь к рабочей папке" 
            
            'Можно передать методу ExecuteScript строку, содержащую скрипт. Единственное
            'условие - она должна завершаться символом перевода строки vbNewLine
            ThisApplication.ExecuteScript("MsgBox ThisApplication.WorkFolder" & vbNewLine)
            
            'Выполнить процедуру ShowInfo, которая находится в скрипте команды "CMD_TEST".
            'Передать ей два аргумента и сообщить значение, возвращенное процедурой
            res = ThisApplication.ExecuteScript("CMD_TEST", "ShowInfo", "String parameter", ThisObject) 
            MsgBox res, , "Значение, возвращенное процедурой ShowInfo"  'Выводит сообщение "Success"
            
            'Выполнить функцию RetObject, которая находится в скрипте команды "CMD_TEST".
            Set ObjRes = ThisApplication.ExecuteScript("CMD_TEST", "RetObject", 1) 
            'Выводит описание объекта, который был возвращен функцией
            MsgBox ObjRes.Description, , "Объект, возвращенный функцией RetObject"
            
            'Самый простой способ вызвать именованную процедуру из другого модуля - поместить
            ' в область глобальных объявлений инструкцию USE MODULE_SYSID. После этого можно
            'обращаться к процедурам этого модуля просто по имени:
            Call ShowInfo("SomeString", ThisObject)
End Sub 
'==============================================================================


'Тело команды с системным именем CMD_TEST. Фактически команда состоит из одной строки 
'ThisScript.RetValue = ThisApplication.WorkFolder и двух процедур, которые при 
'запуске команды обычным образом (на объекте или с панели инструментов) выполнены не будут.

'= CMD_TEST ===================================================================
'Это собственно команда. Она просто устанавливает значение, возвращаемое скриптом
ThisScript.RetValue = ThisApplication.WorkFolder

'Процедура, которая сообщает значения переданных ей аргументов и устанавливает
'возвращаемое значение (строка "Success")
Sub ShowInfo(strArg, objArg)
        MsgBox strArg & Chr(13) & objArg.Description, , "Аргументы, переданные в ShowInfo"
        ThisScript.RetValue = "Success"
End Sub 

'Функция возвращает объект, полученный по индексу с Рабочего стола. Индекс передается
'функции в качестве аргумента
Function RetObject(ObjIndex)
        Set RetObject = ThisApplication.Desktop.Objects(ObjIndex)
End Function 

'==============================================================================
© 2016 CSoft Development. Все права защищены.